#include "editionfilm.h"
#include "ui_editionfilm.h"

#include <QFileDialog>
#include <QInputDialog>
#include <QListWidgetItem>
#include <QMessageBox>


EditionFilm::EditionFilm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::EditionFilm)
{
    ui->setupUi(parent);
    connect(ui->btn_affiche,SIGNAL(clicked()),this,SLOT(onBtnAfficheClicked()));
    connect(ui->lbl_titre,SIGNAL(clicked()),this,SLOT(onBtnTitreClicked()));
    connect(ui->lbl_titre_vo,SIGNAL(clicked()),this,SLOT(onBtnTitreVoClicked()));
    connect(ui->edt_date,SIGNAL(textChanged(QString)),this,SLOT(surModifGen()));
    connect(ui->lbl_pays,SIGNAL(clicked()),this,SLOT(onBtnPaysClicked()));
    connect(ui->edt_duree,SIGNAL(timeChanged(QTime)),this,SLOT(surModifGen()));
    connect(ui->edt_note,SIGNAL(valueChanged(double)),this,SLOT(surModifGen()));
    connect(ui->edt_note_critique,SIGNAL(valueChanged(double)),this,SLOT(surModifGen()));
    connect(ui->edt_note_public,SIGNAL(valueChanged(double)),this,SLOT(surModifGen()));
    connect(ui->edt_date_visio,SIGNAL(dateChanged(QDate)),this,SLOT(surModifGen()));
    connect(ui->edt_nb_visio,SIGNAL(valueChanged(double)),this,SLOT(surModifGen()));
    connect(ui->edt_synopsis,SIGNAL(textChanged()),this,SLOT(surModifGen()));
    connect(ui->btn_ajout_genre,SIGNAL(clicked()),this,SLOT(onAjoutGenre()));
    connect(ui->btn_ajout_acteur,SIGNAL(clicked()),this,SLOT(onAjoutActeur()));
    connect(ui->btn_ajout_real,SIGNAL(clicked()),this,SLOT(onAjoutReal()));
    connect(ui->btn_suppr_genre,SIGNAL(clicked()),this,SLOT(onSupprGenre()));
    connect(ui->btn_suppr_acteur,SIGNAL(clicked()),this,SLOT(onSupprActeur()));
    connect(ui->btn_suppr_real,SIGNAL(clicked()),this,SLOT(onSupprReal()));
    connect(ui->btn_svg,SIGNAL(clicked()),this,SLOT(onBtnSvgClicked()));
    //connect(parent, SIGNAL())
}

EditionFilm::~EditionFilm()
{
    if(mModifieNonSauvee)
    {
        if(QMessageBox::question(NULL,"Sauvegarder"
                                 ,"Vous avez effectué des modifications non sauvegardées.\nSouhaitez vous les enregistrer?"
                                 ,QMessageBox::Cancel,QMessageBox::Ok)
                ==QMessageBox::Ok)
            onBtnSvgClicked();
    }
    delete ui;
}



void EditionFilm::lireFilm(film *f)
{
    mFilm = f;

    mModifieNonSauvee = false;

    setAffiche(mFilm->Pochette());

    QFont pol = ui->lbl_titre->font();
    pol.setPointSize(25);
    ui->lbl_titre->setFont(pol);
    ui->lbl_titre->setText(mFilm->titre());
    ui->lbl_titre_vo->setText(mFilm->titreOriginal());

    ui->edt_date->setText(mFilm->date());
    nationalite n;
    ui->lbl_pays->setText("");
    foreach (n, mFilm->listeNationalites())
    {
        if(ui->lbl_pays->text().isEmpty())
            ui->lbl_pays->setText(n.nom());
        else
            ui->lbl_pays->setText(ui->lbl_pays->text()+", "+n.nom());
    }
    int heure = mFilm->duree()/(60*60);
    int min = (mFilm->duree()/60)%(60);
    ui->edt_duree->setTime(QTime(heure,min));
    //ui->edt_note->setValue();
    ui->edt_note_public->setValue(mFilm->noteAllocine());
    ui->edt_note_critique->setValue(mFilm->notePresse());
//    ui->edt_nb_visio->setValue(f.nb_visionnage);
//    ui->edt_date_visio->setDate(f.date_dernier_visionnage);

    ui->edt_synopsis->setText(mFilm->synopsis());

    personne p;
    foreach (p, mFilm->listeActeurs())
    {
        QListWidgetItem* it = new QListWidgetItem( ui->list_acteur,p.id());
        it->setText(p.nom());
        it->setData(Qt::ToolTipRole,p.resume());
        it->setData(999,p.id());
        ui->list_acteur->addItem(it);
    }
    foreach (p, mFilm->listeRealisateurs())
    {
        QListWidgetItem* it = new QListWidgetItem( ui->list_real,p.id());
        it->setText(p.nom());
        it->setData(Qt::ToolTipRole,p.resume());
        it->setData(999,p.id());
        ui->list_real->addItem(it);
    }
    genre g;
    foreach (g, mFilm->listeGenres())
    {
        QListWidgetItem* it = new QListWidgetItem( ui->list_genre,g.id());
        it->setText(g.nom());
        ui->list_genre->addItem(it);
    }

}

void EditionFilm::setAffiche(QPixmap p)
{
    ui->lbl_affiche->setPixmap(p.scaled(ui->lbl_affiche->width()
                                                     ,ui->lbl_affiche->height()
                                        ,Qt::KeepAspectRatio));
}

void EditionFilm::surModifGen()
{
    mModifieNonSauvee = true;
}

void EditionFilm::onBtnAfficheClicked()
{
    QString fic = QFileDialog::getOpenFileName(NULL,tr("Affiche"),"","*.PNG,*.JPEG,*.JPG,*.BMP");
    QPixmap p;
    if(p.load(fic))
    {
        //on sauve l'affiche ici car celle stockée dans le label a été modifiée (retaillée a la dimension du label)
        mFilm->setPochette(p);
        setAffiche(mFilm->Pochette());
        surModifGen();
    }
}

void EditionFilm::onBtnTitreClicked()
{
    bool ok;
    QString titre = QInputDialog::getText(NULL,"Titre","Veuillez saisir le nouveau titre",QLineEdit::Normal,ui->lbl_titre->text(),&ok);
    if(ok)
    {
        ui->lbl_titre->setText(titre);
        surModifGen();
    }
}

void EditionFilm::onBtnTitreVoClicked()
{
    bool ok;
    QString titre = QInputDialog::getText(NULL,"Titre","Veuillez saisir le nouveau titre VO",QLineEdit::Normal,ui->lbl_titre_vo->text(),&ok);
    if(ok)
    {
        ui->lbl_titre_vo->setText(titre);
        surModifGen();
    }
}

void EditionFilm::onBtnPaysClicked()
{
    surModifGen();
#warning a continuer (post-it pour savoir ou j en suis)
    nationalite::dialogSelectNationalite();
}

void EditionFilm::onAjoutGenre()
{
    surModifGen();
}

void EditionFilm::onSupprGenre()
{
    surModifGen();
}

void EditionFilm::onAjoutActeur()
{
    surModifGen();
}

void EditionFilm::onSupprActeur()
{
    surModifGen();
}

void EditionFilm::onAjoutReal()
{
    surModifGen();
}

void EditionFilm::onSupprReal()
{
    surModifGen();
}



void EditionFilm::onBtnSvgClicked()
{

    mModifieNonSauvee = false;
//    QPixmap p = *ui->lbl_affiche->pixmap();
//    mFilm->titre= ui->lbl_titre->text();
//    mFilm->date_sortie = ui->edt_date->date();
//    mFilm->pays= ui->edt_pays->text();
//    mFilm->synopsis = ui->edt_synopsis->toPlainText();
//    mFilm->duree = ui->edt_duree->time();
//    mFilm->affiche = *ui->lbl_affiche->pixmap();
//    mFilm->note = ui->edt_note->value();
//    mFilm->note_spectateur = ui->edt_note_public->value();
//    mFilm->note_critique = ui->edt_note_critique->value();
//    mFilm->titre_vo = ui->lbl_titre_vo->text();
//    mFilm->nb_visionnage = ui->edt_nb_visio->value();
//    mFilm.date_dernier_visionnage = ui->edt_date_visio->date();


//    int clef = req.sauver_film(mFilm);

//    QStringList l_genre;
//    for(int i = 0 ; i < ui->list_genre->model()->rowCount() ; i++)
//    {
//    QString genre = ui->list_genre->model()->index(i,0).data().toString();
//    l_genre.append(genre);
//    }
    //    req.sauver_genre_film(clef,l_genre);

}
